import ExcelJS from "exceljs";
import FileSaver from "file-saver";
/**
 * 需要注意的是在浏览器环境中运行 JavaScript，
 * 浏览器的安全策略通常不允许直接访问读写本地文件系统。
 * 在这种情况下，需要通过其他方式将文件转换为buffer数据，
 * 在导出Excel时使用FileSaver.js库将缓冲区数据保存到文件中。
 */
// 导出excel文件
/**
 * @param { Array } columns [列表的配置]
 * @param { Array } list [导出的数据项]
 * @param { String } fileName [导出的文件名]
 */
export const exportExcel = (columns: Array<any>, list: Array<any>, fileName: string) => {
  // 提取列表的配置
  const rows: any = []
  columns.forEach(item => {
    if(!item.isEdit) {
      rows.push({
        header: item.label,
        key: item.prop,
      })
    }
  })
  // 创建工作簿
  const workbook = new ExcelJS.Workbook();
  // 添加工作表，名为sheet1
  const sheet1 = workbook.addWorksheet("sheet1");
  // 设置表头
  sheet1.columns = rows;
  // 将数据写入工作表
  list.forEach((row) => {
    sheet1.addRow(row);
  });
  // 导出表格文件
  workbook.xlsx.writeBuffer().then((buffer) => {
    let file = new Blob([buffer], {type: "application/octet-stream"});
    FileSaver.saveAs(file, fileName? fileName + ".xlsx" : "ExcelJS.xlsx");
  }).catch(error => console.log('Error writing excel export', error))
}
